Название плагина: DKR_PuzzleMouse
Автор: DarchanKaen
Версия: 2.3.0
Дата выхода: 25.12.2021
Описание плагина:
Плагин позволяет использовать мышку для создания паззлов, а именно (для ЛКМ и ПКМ, вместе или отдельно...а также колеса мыши):
- отключать и включать стандартное поведение;
- получать координаты кликов и номер тега тайла (по-умолчанию они записываются в переменные 11-16, можно изменить);
- подсчитывать количество кликов и задавать кол-во;
- вызывать Общие события.
Использование плагина:
Одинаково и для MV , и для MZ (в эвенте, в команде "Скрипт")!
- Отключение стандартного поведения:
DKR.PuzzleMouse.mouseLeftClickStandardBehaviorOnOf f(isStandardBehaviourOn, isReqLeftMouseCoord); - тольк ЛКМ.
DKR.PuzzleMouse.mouseRightClickStandardBehaviorOnO ff(isStandardBehaviourOn, isReqRightMouseCoord); - тольк ПКМ.
DKR.PuzzleMouse.mouseALLStandardBehaviorOnOff(isSt andardBehaviourOn, isReqLeftMouseCoord, isReqRightMouseCoord); - вместе ЛКМ и ПКМ.
где:
isStandardBehaviourOn - true (включено) или false (выключено) стандартное поведение ЛКМ и ПКМ (идти / меню);
isReqLeftMouseCoord, isReqRightMouseCoord - true (нужны координаты X, Y и номер тайла) или false (не нужны) для ЛКМ и ПКМ.
- Включение стандартного поведения:
DKR.PuzzleMouse.onMouseLeftClickStandardBehavior() ; - только ЛКМ.
DKR.PuzzleMouse.onMouseRightClickStandardBehavior( ); - только ПКМ.
DKR.PuzzleMouse.onMouseLeftAndRightClickStandardBe havior(); - вместе ЛКМ и ПКМ.
- Задание номера вызываемого Общего события:
DKR.PuzzleMouse.setMouseLeftClickCommonEventId(N); - задание Общего события для ЛКМ; 0 по-умочланию.
DKR.PuzzleMouse.setMouseRightClickCommonEventId(N) ; - задание Общего события для ПКМ; 0 по-умочланию.
DKR.PuzzleMouse.setMouseWheelCommonEventId(N); - задание Общего события для Колесика мышки; 0 по-умочланию.
где N - номер вызываемого Общего события; если номер равен 0, то Общее событие не вызывается.
- Получение и задание кол-ва кликов:
DKR.PuzzleMouse.getLeftMouseClickCount(); - получение кол-ва кликов ЛКМ.
DKR.PuzzleMouse.getRightMouseClickCount(); - получение кол-ва кликов ПКМ.
DKR.PuzzleMouse.setLeftMouseClickCount(N); - задание кол-ва кликов ЛКМ; 0 по-умочланию.
DKR.PuzzleMouse.setRightMouseClickCount(N); - задание кол-ва кликов ЛКМ; 0 по-умочланию
Спойлер Код плагина:
Спойлер Код плагина для MV и для MZ, 2.3.0:
Код:/*: *----------------------------------------------------------------------------- * DKR PuzzleMouse *----------------------------------------------------------------------------- * For: RPGMAKER MV, MZ * DKR_PuzzleMouse_2.0_MVMZ.js *----------------------------------------------------------------------------- * 25.12.2021 - Версия 2.3.0 *----------------------------------------------------------------------------- * Поставляется AS-IS. * Вся ответственность при использовании - на Пользователе! *----------------------------------------------------------------------------- *----------------------------------------------------------------------------- * @author DarchanKaen * @target MV, MZ * @plugindesc (v.2.3.0) Плагин позволяет использовать мышку для создания паззлов, а именно (для ЛКМ и ПКМ, вместе или отдельно): отключать и включать стандартное поведение, получать координаты кликов и номер тега тайла, подсчитывать количество кликов, а также вызывать Общие события. * * @help * DKR PuzzleMouse * ---------------------------------------------------------------------------- * ---Общая информация: * Плагин позволяет использовать мышку для создания паззлов, * а именно (для ЛКМ и ПКМ, вместе или отдельно...а также колеса мыши)::: * - отключать и включать стандартное поведение; * - получать координаты кликов и номер тега тайла (они записываются в перменные 11-16); * - подсчитывать количество кликов и задавать кол-во; * - вызывать Общие события. * ---Команды(в эвенте команда "Скрипт"): * - Включение / отключение стандратного поведения: * DKR.PuzzleMouse.mouseLeftClickStandardBehaviorOnOff(isStandardBehaviourOn, isReqLeftMouseCoord); - тольк ЛКМ. * DKR.PuzzleMouse.mouseRightClickStandardBehaviorOnOff(isStandardBehaviourOn, isReqRightMouseCoord); - тольк ПКМ. * DKR.PuzzleMouse.mouseALLStandardBehaviorOnOff(isStandardBehaviourOn, isReqLeftMouseCoord, isReqRightMouseCoord); - вместе ЛКМ и ПКМ. * где: * isStandardBehaviourOn - true (включено) или false (выключено) стандартное поведение ЛКМ и ПКМ (идти / меню); * isReqLeftMouseCoord, isReqRightMouseCoord - true (нужны координаты X, Y и номер тайла) или false (не нужны) для ЛКМ и ПКМ. * - Задание номера вызываемого Общего события. * DKR.PuzzleMouse.setMouseLeftClickCommonEventId(N); - задание Общего события для ЛКМ; 0 по-умочланию. * DKR.PuzzleMouse.setMouseRightClickCommonEventId(N); - задание Общего события для ПКМ; 0 по-умочланию * DKR.PuzzleMouse.setMouseWheelCommonEventId(N); - задание Общего события для Колесика мышки; 0 по-умочланию * где N - номер вызываемого Общего события; если номер равен 0, то Общее событие не вызывается! * - Получение и задание кол-ва кликов. * DKR.PuzzleMouse.getLeftMouseClickCount(); - получение кол-ва кликов ЛКМ. * DKR.PuzzleMouse.getRightMouseClickCount(); - получение кол-ва кликов ПКМ. * DKR.PuzzleMouse.setLeftMouseClickCount(N); - задание кол-ва кликов ЛКМ; 0 по-умочланию. * DKR.PuzzleMouse.setRightMouseClickCount(N); - задание кол-ва кликов ЛКМ; 0 по-умочланию * ---------------------------------------------------------------------------- * * @param leftClickXCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты X от ЛКМ. * @default 11 * * @param leftClickYCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты Y от ЛКМ. * @default 12 * * @param leftClickTerrainTagVariableFP * @type variable * @desc Номер переменной для сохранения номера тайла координат XY от ЛКМ. * @default 13 * * @param rightClickXCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты X от ПКМ. * @default 11 * * @param rightClickYCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты Y от ПКМ. * @default 12 * * @param rightClickTerrainTagVariableFP * @type variable * @desc Номер переменной для сохранения номера тайла координат XY от ПКМ. * @default 13 * * @param leftClickCommonEventId * @type number * @desc Номер общего события, вызваемого ЛКМ. * @default 0 * * @param rightClickCommonEventId * @type number * @desc Номер общего события, вызваемого ПКМ. * @default 0 * * @param wheelCommonEventId * @type number * @desc Номер общего события, прокруткой колеса мыши. * @default 0 * */ var Imported = Imported || {}; Imported.DKR_PuzzleMouse = true; var DKR = DKR || {}; DKR.PuzzleMouse = DKR.PuzzleMouse || {}; DKR.PuzzleMouse.version = 2.0; ( () => { //----DATA DKR.PuzzleMouse.parameters = PluginManager.parameters('DKR_PuzzleMouse_2_MVMZ'); let leftClickXCoordProcessedVariableFP = DKR.PuzzleMouse.leftClickXCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["leftClickXCoordProcessedVariableFP"]) || 11; let leftClickYCoordProcessedVariableFP = DKR.PuzzleMouse.leftClickYCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["leftClickYCoordProcessedVariableFP"]) || 12; let leftClickTerrainTagVariableFP = DKR.PuzzleMouse.leftClickTerrainTagVariableFP = Number(DKR.PuzzleMouse.parameters["leftClickTerrainTagVariableFP"]) || 13; let rightClickXCoordProcessedVariableFP = DKR.PuzzleMouse.rightClickXCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["rightClickXCoordProcessedVariableFP"]) || 14; let rightClickYCoordProcessedVariableFP = DKR.PuzzleMouse.rightClickYCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["rightClickYCoordProcessedVariableFP"]) || 15; let rightClickTerrainTagVariableFP = DKR.PuzzleMouse.rightClickTerrainTagVariableFP = Number(DKR.PuzzleMouse.parameters["rightClickTerrainTagVariableFP"]) || 16; let leftClickCommonEventId = DKR.PuzzleMouse.leftClickCommonEventId = Number(DKR.PuzzleMouse.parameters["leftClickCommonEventId"]) || 0; let rightClickCommonEventId = DKR.PuzzleMouse.rightClickCommonEventId = Number(DKR.PuzzleMouse.parameters["rightClickCommonEventId"]) || 0; let wheelCommonEventId = DKR.PuzzleMouse.wheelClickCommonEventId = Number(DKR.PuzzleMouse.parameters["wheelCommonEventId"]) || 0; let leftMouseClickCount = 0; let rightMouseClickCount = 0; //----LOGIC //--standard behaviour //--off s.b. const offMouseLeftClickStandardBehavior = function(isReqLeftMouseCoord = true){ Game_Temp.prototype.setDestination = function(x, y) {}; TouchInput._onLeftButtonDown = function(event){ let x = Graphics.pageToCanvasX(event.pageX); let y = Graphics.pageToCanvasY(event.pageY); //console.log('DKR_PuzzleMouse: LMB click!'); if(true === isReqLeftMouseCoord){ //console.log('DKR_PuzzleMouse: LMB process coords#'); processMouseClickedData(true, x, y); } if(0 !== leftClickCommonEventId){ //console.log('DKR_PuzzleMouse: LMB call Common event: ' + leftClickCommonEventId); $gameTemp.reserveCommonEvent(leftClickCommonEventId); } leftMouseClickCount += 1; } console.log('DKR_PuzzleMouse: LMB standard behavior OFF!'); } const offMouseRightClickStandardBehavior = function(isReqRightMouseCoord = true){ Scene_Map.prototype.isMenuCalled = function() { return Input.isTriggered('menu'); }; TouchInput._onRightButtonDown = function(event){ let x = Graphics.pageToCanvasX(event.pageX); let y = Graphics.pageToCanvasY(event.pageY); //console.log('DKR_PuzzleMouse: RMB click!'); if(true === isReqRightMouseCoord){ //console.log('DKR_PuzzleMouse: RMB process coords@'); processMouseClickedData(false, x, y); } if(0 !== rightClickCommonEventId){ //console.log('DKR_PuzzleMouse: RMB call Common event: ' + rightClickCommonEventId); $gameTemp.reserveCommonEvent(rightClickCommonEventId); } rightMouseClickCount += 1; } console.log('DKR_PuzzleMouse: RMB standard behavior OFF!'); } const offMouseLeftAndRightClickStandardBehavior = function(isReqLeftMouseCoord, isReqRightMouseCoord){ offMouseLeftClickStandardBehavior(isReqLeftMouseCoord); offMouseRightClickStandardBehavior(isReqRightMouseCoord); } //--on s.b. const onMouseLeftClickStandardBehavior = function(){ Game_Temp.prototype.setDestination = function(x, y) { this._destinationX = x; this._destinationY = y; }; TouchInput._onLeftButtonDown = function(event) { const x = Graphics.pageToCanvasX(event.pageX); const y = Graphics.pageToCanvasY(event.pageY); if (Graphics.isInsideCanvas(x, y)) { this._mousePressed = true; this._pressedTime = 0; this._onTrigger(x, y); } }; console.log('DKR_PuzzleMouse: LMB standard behavior ON...'); } const onMouseRightClickStandardBehavior = function(){ Scene_Map.prototype.isMenuCalled = function() { return Input.isTriggered("menu") || TouchInput.isCancelled(); }; TouchInput._onRightButtonDown = function(event) { const x = Graphics.pageToCanvasX(event.pageX); const y = Graphics.pageToCanvasY(event.pageY); if (Graphics.isInsideCanvas(x, y)) { this._onCancel(x, y); } }; console.log('DKR_PuzzleMouse: RMB standard behavior ON...'); } const onMouseLeftAndRightClickStandardBehavior = function(){ onMouseLeftClickStandardBehavior(); onMouseRightClickStandardBehavior(); } //--common events const setMouseLeftClickCommonEventId = function(mlcceId){ if(mlcceId < 0){ console.log('DKR_PuzzleMouse: LMB Common event Id can`t be below zero!'); return false; } leftClickCommonEventId = mlcceId; } DKR.PuzzleMouse.setMouseRightClickCommonEventId = function(mrcceId){ if(mrcceId < 0){ console.log('DKR_PuzzleMouse: RMB Common event Id can`t be below zero!'); return false; } rightClickCommonEventId = mrcceId; } DKR.PuzzleMouse.setMouseWheelCommonEventId = function(mwceId){ if(mwceId < 0){ console.log('DKR_PuzzleMouse: WHEEL Common event Id can`t be below zero!'); return false; } wheelCommonEventId = mwceId; } //----PUZZLE CLICK PROCESSING const processMouseClickedData = function(isLeftMouseClicked, x, y){ let xCoord = x; let yCoord = y; let xCoordProcessed = $gameMap.canvasToMapX(xCoord); let yCoordProcessed = $gameMap.canvasToMapY(yCoord); let terrainTagOfProcessedCoords = $gameMap.terrainTag(xCoordProcessed , yCoordProcessed); if(true === isLeftMouseClicked){ $gameVariables.setValue(leftClickXCoordProcessedVariableFP, xCoordProcessed); $gameVariables.setValue(leftClickYCoordProcessedVariableFP, yCoordProcessed); $gameVariables.setValue(leftClickTerrainTagVariableFP, terrainTagOfProcessedCoords); }else{ $gameVariables.setValue(rightClickXCoordProcessedVariableFP, xCoordProcessed); $gameVariables.setValue(rightClickYCoordProcessedVariableFP, yCoordProcessed); $gameVariables.setValue(rightClickTerrainTagVariableFP, terrainTagOfProcessedCoords); } //console.log('---'); //console.log('DKR_PuzzleMouse: xCoord || xCoordProcessed: ' + xCoord + ' || ' + xCoordProcessed); //console.log('DKR_PuzzleMouse: yCoord || yCoordProcessed: ' + yCoord + ' || ' + yCoordProcessed); //console.log('DKR_PuzzleMouse: terrainTagOfProcessedCoords: ' + terrainTagOfProcessedCoords); } //----WHEEL DKR.PuzzleMouse.TouchInput__onWheel = TouchInput._onWheel; TouchInput._onWheel = function(event) { DKR.PuzzleMouse.TouchInput__onWheel.call(this, event); if(0 !== wheelCommonEventId){ $gameTemp.reserveCommonEvent(wheelCommonEventId); }else{ console.log('W_ZZZ'); } } //---- COMMANDS //-on/off s.b. DKR.PuzzleMouse.mouseLeftClickStandardBehaviorOnOff = function(isStandardBehaviourOn){ if(false === isStandardBehaviourOn){ offMouseLeftClickStandardBehavior(); }else{ onMouseLeftClickStandardBehavior(); } } DKR.PuzzleMouse.mouseRightClickStandardBehaviorOnOff = function(isStandardBehaviourOn){ if(false === isStandardBehaviourOn){ offMouseRightClickStandardBehavior(); }else{ onMouseRightClickStandardBehavior(); } } DKR.PuzzleMouse.mouseALLStandardBehaviorOnOff = function(isStandardBehaviourOn, isReqLeftMouseCoord = true, isReqRightMouseCoord = true){ if(false === isStandardBehaviourOn){ offMouseLeftAndRightClickStandardBehavior(isReqLeftMouseCoord, isReqRightMouseCoord); }else{ onMouseLeftAndRightClickStandardBehavior(); } } //-commont events DKR.PuzzleMouse.setMouseLeftClickCommonEventId = function(mlcceId){ setMouseLeftClickCommonEventId(mlcceId); } DKR.PuzzleMouse.setMouseRightClickCommonEventId = function(mrcceId){ setMouseRightClickCommonEventId(mrcceId); } DKR.PuzzleMouse.setMouseWheelCommonEventId = function(mwceId){ setMouseWheelCommonEventId(mwceId); } //-clicks count DKR.PuzzleMouse.getLeftMouseClickCount = function(){ return leftMouseClickCount; } DKR.PuzzleMouse.setLeftMouseClickCount = function(lCount = 0){ leftMouseClickCount = lCount; } DKR.PuzzleMouse.getRightMouseClickCount = function(){ return rightMouseClickCount; } DKR.PuzzleMouse.setRightMouseClickCount = function(rCount = 0){ rightMouseClickCount = rCount; } })();
Спойлер Код плагина для MV, старая версия 1.0.0:
Код:/*: *----------------------------------------------------------------------------- * DKR PuzzleMouse *----------------------------------------------------------------------------- * For: RPGMAKER MV * DKR_PuzzleMouse_MV.js *----------------------------------------------------------------------------- * 16.05.2021 - Версия 1.0.0 *----------------------------------------------------------------------------- * Поставляется AS-IS. * Вся ответственность при использовании - на Пользователе! *----------------------------------------------------------------------------- *----------------------------------------------------------------------------- * @author DarchanKaen * @target MV * @plugindesc (v.1.0.0) Плагин позволяет использовать мышку для создания паззлов, а именно (для ЛКМ и ПКМ, вместе или отдельно): отключать и включать стандартное поведение, получать координаты кликов и номер тега тайла, подсчитывать количество кликов, а также вызывать Общие события. * * @help * DKR PuzzleMouse * ---------------------------------------------------------------------------- * ---Общая информация: * Плагин позволяет использовать мышку для создания паззлов, * а именно (для ЛКМ и ПКМ, вместе или отдельно)::: * - отключать и включать стандартное поведение; * - получать координаты кликов и номер тега тайла (они записываются в перменные 11-16); * - подсчитывать количество кликов и задавать кол-во; * - вызывать Общие события. * ---Команды(в эвенте команда "Скрипт"): * - Отключение стандратного поведения: * DKR.PuzzleMouse.offMouseLeftClickStandardBehavior(isReqLeftMouseCoord); - тольк ЛКМ. * DKR.PuzzleMouse.offMouseRightClickStandardBehavior(isReqRightMouseCoord); - тольк ПКМ. * DKR.PuzzleMouse.offMouseLeftAndRightClickStandardBehavior(isReqLeftMouseCoord, isReqRightMouseCoord); - вместе ЛКМ и ПКМ. * где isReqLeftMouseCoord, isReqRightMouseCoord - true (нужны координаты и номер тайла) или false (не нужны). * - Включение стандратного поведения: * DKR.PuzzleMouse.onMouseLeftClickStandardBehavior(); - тольк ЛКМ. * DKR.PuzzleMouse.onMouseRightClickStandardBehavior(); - тольк ПКМ. * DKR.PuzzleMouse.onMouseLeftAndRightClickStandardBehavior(); - вместе ЛКМ и ПКМ. * - Задание номера вызываемого Общего события. * DKR.PuzzleMouse.setMouseLeftClickCommonEventId(N); - задание Общего события для ЛКМ; 0 по-умочланию. * DKR.PuzzleMouse.setMouseRightClickCommonEventId(N); - задание Общего события для ПКМ; 0 по-умочланию * где N - номер вызываемого Общего события; если номер равен 0, то Общее событие не вызывается. * - Получение и задание кол-ва кликов. * DKR.PuzzleMouse.getLeftMouseClickCount(); - получение кол-ва кликов ЛКМ. * DKR.PuzzleMouse.getRightMouseClickCount(); - получение кол-ва кликов ПКМ. * DKR.PuzzleMouse.setLeftMouseClickCount(N); - задание кол-ва кликов ЛКМ; 0 по-умочланию. * DKR.PuzzleMouse.setRightMouseClickCount(N); - задание кол-ва кликов ЛКМ; 0 по-умочланию * ---------------------------------------------------------------------------- * * @param mapCellSizeFP * @type number * @desc Размер клетки тайла. * @default 48 * * @param leftClickXCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты X от ЛКМ. * @default 11 * * @param leftClickYCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты Y от ЛКМ. * @default 12 * * @param leftClickTerrainTagVariableFP * @type variable * @desc Номер переменной для сохранения номера тайла координат XY от ЛКМ. * @default 13 * * @param rightClickXCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты X от ПКМ. * @default 11 * * @param rightClickYCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты Y от ПКМ. * @default 12 * * @param rightClickTerrainTagVariableFP * @type variable * @desc Номер переменной для сохранения номера тайла координат XY от ПКМ. * @default 13 * * @param leftClickCommonEventId * @type number * @desc Номер общего события, вызваемого ЛКМ. * @default 0 * * @param rightClickCommonEventId * @type number * @desc Номер общего события, вызваемого ПКМ. * @default 0 * */ var Imported = Imported || {}; Imported.DKR_PuzzleMouse = true; var DKR = DKR || {}; DKR.PuzzleMouse = DKR.PuzzleMouse || {}; (function() { DKR.PuzzleMouse.version = 1.0; DKR.PuzzleMouse.parameters = PluginManager.parameters('DKR_PuzzleMouse'); DKR.PuzzleMouse.mapCellSizeFP = Number(DKR.PuzzleMouse.parameters["mapCellSizeFP"]) || 48; DKR.PuzzleMouse.leftClickXCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["leftClickXCoordProcessedVariableFP"]) || 11; DKR.PuzzleMouse.leftClickYCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["leftClickYCoordProcessedVariableFP"]) || 12; DKR.PuzzleMouse.leftClickTerrainTagVariableFP = Number(DKR.PuzzleMouse.parameters["leftClickTerrainTagVariableFP"]) || 13; DKR.PuzzleMouse.rightClickXCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["rightClickXCoordProcessedVariableFP"]) || 14; DKR.PuzzleMouse.rightClickYCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["rightClickYCoordProcessedVariableFP"]) || 15; DKR.PuzzleMouse.rightClickTerrainTagVariableFP = Number(DKR.PuzzleMouse.parameters["rightClickTerrainTagVariableFP"]) || 16; DKR.PuzzleMouse.leftClickCommonEventId = Number(DKR.PuzzleMouse.parameters["leftClickCommonEventId"]) || 0; DKR.PuzzleMouse.rightClickCommonEventId = Number(DKR.PuzzleMouse.parameters["rightClickCommonEventId"]) || 0; //----COMMON EVENT IDs DKR.PuzzleMouse.setMouseLeftClickCommonEventId = function(mlcceId){ if(mlcceId < 0){ console.log('DKR_PuzzleMouse: LMB Common event Id can`t be below zero!'); return false; } DKR.PuzzleMouse.leftClickCommonEventId = mlcceId; console.log('DKR_PuzzleMouse: set LMB Common event Id: ' + DKR.PuzzleMouse.leftClickCommonEventId); } DKR.PuzzleMouse.setMouseRightClickCommonEventId = function(mrcceId){ if(mrcceId < 0){ console.log('DKR_PuzzleMouse: RMB Common event Id can`t be below zero!'); return false; } DKR.PuzzleMouse.rightClickCommonEventId = mrcceId; console.log('DKR_PuzzleMouse: set RMB Common event Id: ' + DKR.PuzzleMouse.leftClickCommonEventId); } //----MOUSE CLICKED COUNT DKR.PuzzleMouse.leftMouseClickCount = 0; DKR.PuzzleMouse.rightMouseClickCount = 0; DKR.PuzzleMouse.getLeftMouseClickCount = function(){ return DKR.PuzzleMouse.leftMouseClickCount; } DKR.PuzzleMouse.setLeftMouseClickCount = function(lCount = 0){ return DKR.PuzzleMouse.leftMouseClickCount = lCount; } DKR.PuzzleMouse.getRightMouseClickCount = function(){ return DKR.PuzzleMouse.rightMouseClickCount; } DKR.PuzzleMouse.setRightMouseClickCount = function(rCount = 0){ return DKR.PuzzleMouse.rightMouseClickCount = rCount; } //----STANDARD BEHAVIOR //--OFF STANDARD BEHAVIOR DKR.PuzzleMouse.offMouseLeftClickStandardBehavior = function(isReqLeftMouseCoord = true){ Game_Temp.prototype.setDestination = function(x, y) {}; TouchInput._onLeftButtonDown = function(){ console.log('DKR_PuzzleMouse: LMB click!'); if(true === isReqLeftMouseCoord){ console.log('DKR_PuzzleMouse: LMB process coords#'); DKR.PuzzleMouse.processMouseClickedData(true); } if(0 !== DKR.PuzzleMouse.leftMouseClickCommonEventId){ console.log('DKR_PuzzleMouse: LMB call Common event: ' + DKR.PuzzleMouse.leftClickCommonEventId); $gameTemp.reserveCommonEvent(DKR.PuzzleMouse.leftClickCommonEventId); } DKR.PuzzleMouse.leftMouseClickCount += 1; } console.log('DKR_PuzzleMouse: LMB standard behavior OFF!'); } DKR.PuzzleMouse.offMouseRightClickStandardBehavior = function(isReqRightMouseCoord = true){ Scene_Map.prototype.isMenuCalled = function() { return Input.isTriggered('menu'); }; TouchInput._onRightButtonDown = function(){ console.log('DKR_PuzzleMouse: RMB click!'); if(true === isReqRightMouseCoord){ console.log('DKR_PuzzleMouse: RMB process coords@'); DKR.PuzzleMouse.processMouseClickedData(false); } if(0 !== DKR.PuzzleMouse.rightMouseClickCommonEventId){ console.log('DKR_PuzzleMouse: RMB call Common event: ' + DKR.PuzzleMouse.rightClickCommonEventId); $gameTemp.reserveCommonEvent(DKR.PuzzleMouse.rightClickCommonEventId); } DKR.PuzzleMouse.rightMouseClickCount += 1; } console.log('DKR_PuzzleMouse: RMB standard behavior OFF!'); } DKR.PuzzleMouse.offMouseLeftAndRightClickStandardBehavior = function(isReqLeftMouseCoord = true, isReqRightMouseCoord = true){ DKR.PuzzleMouse.offMouseLeftClickStandardBehavior(isReqLeftMouseCoord); DKR.PuzzleMouse.offMouseRightClickStandardBehavior(isReqRightMouseCoord); } //-- //--ON STANDARD BEHAVIOR DKR.PuzzleMouse.onMouseLeftClickStandardBehavior = function(){ Game_Temp.prototype.setDestination = function(x, y) { this._destinationX = x; this._destinationY = y; }; TouchInput._onLeftButtonDown = function(event) { const x = Graphics.pageToCanvasX(event.pageX); const y = Graphics.pageToCanvasY(event.pageY); if (Graphics.isInsideCanvas(x, y)) { this._mousePressed = true; this._pressedTime = 0; this._onTrigger(x, y); } }; console.log('DKR_PuzzleMouse: LMB standard behavior ON...'); } DKR.PuzzleMouse.onMouseRightClickStandardBehavior = function(){ Scene_Map.prototype.isMenuCalled = function() { return Input.isTriggered("menu") || TouchInput.isCancelled(); }; TouchInput._onRightButtonDown = function(event) { const x = Graphics.pageToCanvasX(event.pageX); const y = Graphics.pageToCanvasY(event.pageY); if (Graphics.isInsideCanvas(x, y)) { this._onCancel(x, y); } }; console.log('DKR_PuzzleMouse: RMB standard behavior ON...'); } DKR.PuzzleMouse.onMouseLeftAndRightClickStandardBehavior = function(){ DKR.PuzzleMouse.onMouseLeftClickStandardBehavior(); DKR.PuzzleMouse.onMouseRightClickStandardBehavior(); } //-- //---- //----PUZZLE CLICK PROCESSING DKR.PuzzleMouse.processMouseClickedData = function(isLeftMouseClicked){ const mapCellSize = DKR.PuzzleMouse.mapCellSizeFP; let xCoord = TouchInput.x; let yCoord = TouchInput.y; let xCoordProcessed = Math.floor(xCoord / mapCellSize); let yCoordProcessed = Math.floor(yCoord / mapCellSize); let terrainTagOfProcessedCoords = $gameMap.terrainTag(xCoordProcessed , yCoordProcessed); if(true === isLeftMouseClicked){ $gameVariables.setValue(DKR.PuzzleMouse.leftClickXCoordProcessedVariableFP, xCoordProcessed); $gameVariables.setValue(DKR.PuzzleMouse.leftClickYCoordProcessedVariableFP, yCoordProcessed); $gameVariables.setValue(DKR.PuzzleMouse.leftClickTerrainTagVariableFP, terrainTagOfProcessedCoords); }else{ $gameVariables.setValue(DKR.PuzzleMouse.rightClickXCoordProcessedVariableFP, xCoordProcessed); $gameVariables.setValue(DKR.PuzzleMouse.rightClickYCoordProcessedVariableFP, yCoordProcessed); $gameVariables.setValue(DKR.PuzzleMouse.rightClickTerrainTagVariableFP, terrainTagOfProcessedCoords); } console.log('DKR_PuzzleMouse: xCoord || xCoordProcessed: ' + xCoord + ' || ' + xCoordProcessed); console.log('DKR_PuzzleMouse: yCoord || yCoordProcessed: ' + yCoord + ' || ' + yCoordProcessed); console.log('DKR_PuzzleMouse: terrainTagOfProcessedCoords: ' + terrainTagOfProcessedCoords); } })();
Спойлер Код плагина для MZ, старая версия 1.0.0:
Код:/*: *----------------------------------------------------------------------------- * DKR PuzzleMouse *----------------------------------------------------------------------------- * For: RPGMAKER MZ * DKR_PuzzleMouse_MZ.js *----------------------------------------------------------------------------- * 16.05.2021 - Версия 1.0.0 *----------------------------------------------------------------------------- * Поставляется AS-IS. * Вся ответственность при использовании - на Пользователе! *----------------------------------------------------------------------------- *----------------------------------------------------------------------------- * @author DarchanKaen * @target MZ * @plugindesc (v.1.0.0) Плагин позволяет использовать мышку для создания паззлов, а именно (для ЛКМ и ПКМ, вместе или отдельно): отключать и включать стандартное поведение, получать координаты кликов и номер тега тайла, подсчитывать количество кликов, а также вызывать Общие события. * * @help * DKR PuzzleMouse * ---------------------------------------------------------------------------- * ---Общая информация: * Плагин позволяет использовать мышку для создания паззлов, * а именно (для ЛКМ и ПКМ, вместе или отдельно)::: * - отключать и включать стандартное поведение; * - получать координаты кликов и номер тега тайла (они записываются в перменные 11-16); * - подсчитывать количество кликов и задавать кол-во; * - вызывать Общие события. * ---Команды(в эвенте команда "Скрипт"): * - Отключение стандратного поведения: * DKR.PuzzleMouse.offMouseLeftClickStandardBehavior(isReqLeftMouseCoord); - тольк ЛКМ. * DKR.PuzzleMouse.offMouseRightClickStandardBehavior(isReqRightMouseCoord); - тольк ПКМ. * DKR.PuzzleMouse.offMouseLeftAndRightClickStandardBehavior(isReqLeftMouseCoord, isReqRightMouseCoord); - вместе ЛКМ и ПКМ. * где isReqLeftMouseCoord, isReqRightMouseCoord - true (нужны координаты и номер тайла) или false (не нужны). * - Включение стандратного поведения: * DKR.PuzzleMouse.onMouseLeftClickStandardBehavior(); - тольк ЛКМ. * DKR.PuzzleMouse.onMouseRightClickStandardBehavior(); - тольк ПКМ. * DKR.PuzzleMouse.onMouseLeftAndRightClickStandardBehavior(); - вместе ЛКМ и ПКМ. * - Задание номера вызываемого Общего события. * DKR.PuzzleMouse.setMouseLeftClickCommonEventId(N); - задание Общего события для ЛКМ; 0 по-умочланию. * DKR.PuzzleMouse.setMouseRightClickCommonEventId(N); - задание Общего события для ПКМ; 0 по-умочланию * где N - номер вызываемого Общего события; если номер равен 0, то Общее событие не вызывается. * - Получение и задание кол-ва кликов. * DKR.PuzzleMouse.getLeftMouseClickCount(); - получение кол-ва кликов ЛКМ. * DKR.PuzzleMouse.getRightMouseClickCount(); - получение кол-ва кликов ПКМ. * DKR.PuzzleMouse.setLeftMouseClickCount(N); - задание кол-ва кликов ЛКМ; 0 по-умочланию. * DKR.PuzzleMouse.setRightMouseClickCount(N); - задание кол-ва кликов ЛКМ; 0 по-умочланию * ---------------------------------------------------------------------------- * * @param mapCellSizeFP * @type number * @desc Размер клетки тайла. * @default 48 * * @param leftClickXCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты X от ЛКМ. * @default 11 * * @param leftClickYCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты Y от ЛКМ. * @default 12 * * @param leftClickTerrainTagVariableFP * @type variable * @desc Номер переменной для сохранения номера тайла координат XY от ЛКМ. * @default 13 * * @param rightClickXCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты X от ПКМ. * @default 11 * * @param rightClickYCoordProcessedVariableFP * @type variable * @desc Номер переменной для сохранения координаты Y от ПКМ. * @default 12 * * @param rightClickTerrainTagVariableFP * @type variable * @desc Номер переменной для сохранения номера тайла координат XY от ПКМ. * @default 13 * * @param leftClickCommonEventId * @type number * @desc Номер общего события, вызваемого ЛКМ. * @default 0 * * @param rightClickCommonEventId * @type number * @desc Номер общего события, вызваемого ПКМ. * @default 0 * */ var Imported = Imported || {}; Imported.DKR_PuzzleMouse = true; var DKR = DKR || {}; DKR.PuzzleMouse = DKR.PuzzleMouse || {}; DKR.PuzzleMouse.version = 1.0; DKR.PuzzleMouse.parameters = PluginManager.parameters('DKR_PuzzleMouse'); DKR.PuzzleMouse.mapCellSizeFP = Number(DKR.PuzzleMouse.parameters["mapCellSizeFP"]) || 48; DKR.PuzzleMouse.leftClickXCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["leftClickXCoordProcessedVariableFP"]) || 11; DKR.PuzzleMouse.leftClickYCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["leftClickYCoordProcessedVariableFP"]) || 12; DKR.PuzzleMouse.leftClickTerrainTagVariableFP = Number(DKR.PuzzleMouse.parameters["leftClickTerrainTagVariableFP"]) || 13; DKR.PuzzleMouse.rightClickXCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["rightClickXCoordProcessedVariableFP"]) || 14; DKR.PuzzleMouse.rightClickYCoordProcessedVariableFP = Number(DKR.PuzzleMouse.parameters["rightClickYCoordProcessedVariableFP"]) || 15; DKR.PuzzleMouse.rightClickTerrainTagVariableFP = Number(DKR.PuzzleMouse.parameters["rightClickTerrainTagVariableFP"]) || 16; DKR.PuzzleMouse.leftClickCommonEventId = Number(DKR.PuzzleMouse.parameters["leftClickCommonEventId"]) || 0; DKR.PuzzleMouse.rightClickCommonEventId = Number(DKR.PuzzleMouse.parameters["rightClickCommonEventId"]) || 0; //----COMMON EVENT IDs DKR.PuzzleMouse.setMouseLeftClickCommonEventId = function(mlcceId){ if(mlcceId < 0){ console.log('DKR_PuzzleMouse: LMB Common event Id can`t be below zero!'); return false; } DKR.PuzzleMouse.leftClickCommonEventId = mlcceId; console.log('DKR_PuzzleMouse: set LMB Common event Id: ' + DKR.PuzzleMouse.leftClickCommonEventId); } DKR.PuzzleMouse.setMouseRightClickCommonEventId = function(mrcceId){ if(mrcceId < 0){ console.log('DKR_PuzzleMouse: RMB Common event Id can`t be below zero!'); return false; } DKR.PuzzleMouse.rightClickCommonEventId = mrcceId; console.log('DKR_PuzzleMouse: set RMB Common event Id: ' + DKR.PuzzleMouse.leftClickCommonEventId); } //----MOUSE CLICKED COUNT DKR.PuzzleMouse.leftMouseClickCount = 0; DKR.PuzzleMouse.rightMouseClickCount = 0; DKR.PuzzleMouse.getLeftMouseClickCount = function(){ return DKR.PuzzleMouse.leftMouseClickCount; } DKR.PuzzleMouse.setLeftMouseClickCount = function(lCount = 0){ return DKR.PuzzleMouse.leftMouseClickCount = lCount; } DKR.PuzzleMouse.getRightMouseClickCount = function(){ return DKR.PuzzleMouse.rightMouseClickCount; } DKR.PuzzleMouse.setRightMouseClickCount = function(rCount = 0){ return DKR.PuzzleMouse.rightMouseClickCount = rCount; } //----STANDARD BEHAVIOR //--OFF STANDARD BEHAVIOR DKR.PuzzleMouse.offMouseLeftClickStandardBehavior = function(isReqLeftMouseCoord = true){ Game_Temp.prototype.setDestination = function(x, y) {}; TouchInput._onLeftButtonDown = function(){ console.log('DKR_PuzzleMouse: LMB click!'); if(true === isReqLeftMouseCoord){ console.log('DKR_PuzzleMouse: LMB process coords#'); DKR.PuzzleMouse.processMouseClickedData(true); } if(0 !== DKR.PuzzleMouse.leftMouseClickCommonEventId){ console.log('DKR_PuzzleMouse: LMB call Common event: ' + DKR.PuzzleMouse.leftClickCommonEventId); $gameTemp.reserveCommonEvent(DKR.PuzzleMouse.leftClickCommonEventId); } DKR.PuzzleMouse.leftMouseClickCount += 1; } console.log('DKR_PuzzleMouse: LMB standard behavior OFF!'); } DKR.PuzzleMouse.offMouseRightClickStandardBehavior = function(isReqRightMouseCoord = true){ Scene_Map.prototype.isMenuCalled = function() { return Input.isTriggered('menu'); }; TouchInput._onRightButtonDown = function(){ console.log('DKR_PuzzleMouse: RMB click!'); if(true === isReqRightMouseCoord){ console.log('DKR_PuzzleMouse: RMB process coords@'); DKR.PuzzleMouse.processMouseClickedData(false); } if(0 !== DKR.PuzzleMouse.rightMouseClickCommonEventId){ console.log('DKR_PuzzleMouse: RMB call Common event: ' + DKR.PuzzleMouse.rightClickCommonEventId); $gameTemp.reserveCommonEvent(DKR.PuzzleMouse.rightClickCommonEventId); } DKR.PuzzleMouse.rightMouseClickCount += 1; } console.log('DKR_PuzzleMouse: RMB standard behavior OFF!'); } DKR.PuzzleMouse.offMouseLeftAndRightClickStandardBehavior = function(isReqLeftMouseCoord = true, isReqRightMouseCoord = true){ DKR.PuzzleMouse.offMouseLeftClickStandardBehavior(isReqLeftMouseCoord); DKR.PuzzleMouse.offMouseRightClickStandardBehavior(isReqRightMouseCoord); } //-- //--ON STANDARD BEHAVIOR DKR.PuzzleMouse.onMouseLeftClickStandardBehavior = function(){ Game_Temp.prototype.setDestination = function(x, y) { this._destinationX = x; this._destinationY = y; }; TouchInput._onLeftButtonDown = function(event) { const x = Graphics.pageToCanvasX(event.pageX); const y = Graphics.pageToCanvasY(event.pageY); if (Graphics.isInsideCanvas(x, y)) { this._mousePressed = true; this._pressedTime = 0; this._onTrigger(x, y); } }; console.log('DKR_PuzzleMouse: LMB standard behavior ON...'); } DKR.PuzzleMouse.onMouseRightClickStandardBehavior = function(){ Scene_Map.prototype.isMenuCalled = function() { return Input.isTriggered("menu") || TouchInput.isCancelled(); }; TouchInput._onRightButtonDown = function(event) { const x = Graphics.pageToCanvasX(event.pageX); const y = Graphics.pageToCanvasY(event.pageY); if (Graphics.isInsideCanvas(x, y)) { this._onCancel(x, y); } }; console.log('DKR_PuzzleMouse: RMB standard behavior ON...'); } DKR.PuzzleMouse.onMouseLeftAndRightClickStandardBehavior = function(){ DKR.PuzzleMouse.onMouseLeftClickStandardBehavior(); DKR.PuzzleMouse.onMouseRightClickStandardBehavior(); } //-- //---- //----PUZZLE CLICK PROCESSING DKR.PuzzleMouse.processMouseClickedData = function(isLeftMouseClicked){ const mapCellSize = DKR.PuzzleMouse.mapCellSizeFP; let xCoord = TouchInput.x; let yCoord = TouchInput.y; let xCoordProcessed = Math.floor(xCoord / mapCellSize); let yCoordProcessed = Math.floor(yCoord / mapCellSize); let terrainTagOfProcessedCoords = $gameMap.terrainTag(xCoordProcessed , yCoordProcessed); if(true === isLeftMouseClicked){ $gameVariables.setValue(DKR.PuzzleMouse.leftClickXCoordProcessedVariableFP, xCoordProcessed); $gameVariables.setValue(DKR.PuzzleMouse.leftClickYCoordProcessedVariableFP, yCoordProcessed); $gameVariables.setValue(DKR.PuzzleMouse.leftClickTerrainTagVariableFP, terrainTagOfProcessedCoords); }else{ $gameVariables.setValue(DKR.PuzzleMouse.rightClickXCoordProcessedVariableFP, xCoordProcessed); $gameVariables.setValue(DKR.PuzzleMouse.rightClickYCoordProcessedVariableFP, yCoordProcessed); $gameVariables.setValue(DKR.PuzzleMouse.rightClickTerrainTagVariableFP, terrainTagOfProcessedCoords); } console.log('DKR_PuzzleMouse: xCoord || xCoordProcessed: ' + xCoord + ' || ' + xCoordProcessed); console.log('DKR_PuzzleMouse: yCoord || yCoordProcessed: ' + yCoord + ' || ' + yCoordProcessed); console.log('DKR_PuzzleMouse: terrainTagOfProcessedCoords: ' + terrainTagOfProcessedCoords); }
Ссылки на загрузку:
Спойлер Актуальная, универсальная версия 2.3.0:
Спойлер Старые отдельные версии, 1.0.0:
Условия поставки плагина:
Поставляется AS-IS.
Вся ответственность при использовании - на Пользователе!
!
Совместимость с другими плагинами на мышку Автор не гарантирует!
Спойлер Лирическое отступление:Это развитие "плагина", что я использовал в "Кибербаге".
Вот тут написал много чего дополнительного...Делал для себя, но может кому поможет.
В принципе, при помощи такого плагина можно и Порталы сделать, и подобие шутера (вместе с другими плагинами).
Возможно такой плагин(ы) есть, но будет еще вариант.
Социальные закладки